<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1992-1998
-}</span><span>
</span><span id="line-5"></span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-7"></span><span>
</span><span id="line-8"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Types.Var.Set</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-9"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Var, Id and TyVar set types</span></span><span>
</span><span id="line-10"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier">VarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#IdSet"><span class="hs-identifier">IdSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#TyVarSet"><span class="hs-identifier">TyVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#CoVarSet"><span class="hs-identifier">CoVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#TyCoVarSet"><span class="hs-identifier">TyCoVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-11"></span><span>
</span><span id="line-12"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Manipulating these sets</span></span><span>
</span><span id="line-13"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier">emptyVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#unitVarSet"><span class="hs-identifier">unitVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#mkVarSet"><span class="hs-identifier">mkVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-14"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#extendVarSet"><span class="hs-identifier">extendVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#extendVarSetList"><span class="hs-identifier">extendVarSetList</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-15"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#elemVarSet"><span class="hs-identifier">elemVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#subVarSet"><span class="hs-identifier">subVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-16"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#unionVarSet"><span class="hs-identifier">unionVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#unionVarSets"><span class="hs-identifier">unionVarSets</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#mapUnionVarSet"><span class="hs-identifier">mapUnionVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectVarSet"><span class="hs-identifier">intersectVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectsVarSet"><span class="hs-identifier">intersectsVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#disjointVarSet"><span class="hs-identifier">disjointVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#isEmptyVarSet"><span class="hs-identifier">isEmptyVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#delVarSet"><span class="hs-identifier">delVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#delVarSetList"><span class="hs-identifier">delVarSetList</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#delVarSetByKey"><span class="hs-identifier">delVarSetByKey</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-19"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#minusVarSet"><span class="hs-identifier">minusVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#filterVarSet"><span class="hs-identifier">filterVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#mapVarSet"><span class="hs-identifier">mapVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#anyVarSet"><span class="hs-identifier">anyVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#allVarSet"><span class="hs-identifier">allVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-21"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#transCloVarSet"><span class="hs-identifier">transCloVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#fixVarSet"><span class="hs-identifier">fixVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#lookupVarSet_Directly"><span class="hs-identifier">lookupVarSet_Directly</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#lookupVarSet"><span class="hs-identifier">lookupVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#lookupVarSetByName"><span class="hs-identifier">lookupVarSetByName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#sizeVarSet"><span class="hs-identifier">sizeVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#seqVarSet"><span class="hs-identifier">seqVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#elemVarSetByKey"><span class="hs-identifier">elemVarSetByKey</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#partitionVarSet"><span class="hs-identifier">partitionVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#pluralVarSet"><span class="hs-identifier">pluralVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#pprVarSet"><span class="hs-identifier">pprVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#nonDetStrictFoldVarSet"><span class="hs-identifier">nonDetStrictFoldVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-27"></span><span>
</span><span id="line-28"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Deterministic Var set types</span></span><span>
</span><span id="line-29"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier">DVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DIdSet"><span class="hs-identifier">DIdSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DTyVarSet"><span class="hs-identifier">DTyVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DTyCoVarSet"><span class="hs-identifier">DTyCoVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>
</span><span id="line-31"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Manipulating these sets</span></span><span>
</span><span id="line-32"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#emptyDVarSet"><span class="hs-identifier">emptyDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#unitDVarSet"><span class="hs-identifier">unitDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#mkDVarSet"><span class="hs-identifier">mkDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-33"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#extendDVarSet"><span class="hs-identifier">extendDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#extendDVarSetList"><span class="hs-identifier">extendDVarSetList</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#elemDVarSet"><span class="hs-identifier">elemDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetElems"><span class="hs-identifier">dVarSetElems</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#subDVarSet"><span class="hs-identifier">subDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-35"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#unionDVarSet"><span class="hs-identifier">unionDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#unionDVarSets"><span class="hs-identifier">unionDVarSets</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#mapUnionDVarSet"><span class="hs-identifier">mapUnionDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectDVarSet"><span class="hs-identifier">intersectDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetIntersectVarSet"><span class="hs-identifier">dVarSetIntersectVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-37"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectsDVarSet"><span class="hs-identifier">intersectsDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#disjointDVarSet"><span class="hs-identifier">disjointDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-38"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#isEmptyDVarSet"><span class="hs-identifier">isEmptyDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#delDVarSet"><span class="hs-identifier">delDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#delDVarSetList"><span class="hs-identifier">delDVarSetList</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-39"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#minusDVarSet"><span class="hs-identifier">minusDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-40"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#nonDetStrictFoldDVarSet"><span class="hs-identifier">nonDetStrictFoldDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-41"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#filterDVarSet"><span class="hs-identifier">filterDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#mapDVarSet"><span class="hs-identifier">mapDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-42"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetMinusVarSet"><span class="hs-identifier">dVarSetMinusVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#anyDVarSet"><span class="hs-identifier">anyDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#allDVarSet"><span class="hs-identifier">allDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#transCloDVarSet"><span class="hs-identifier">transCloDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-44"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#sizeDVarSet"><span class="hs-identifier">sizeDVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#seqDVarSet"><span class="hs-identifier">seqDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-45"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#partitionDVarSet"><span class="hs-identifier">partitionDVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetToVarSet"><span class="hs-identifier">dVarSetToVarSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-51"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-52"></span><span>
</span><span id="line-53"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span>      </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier">Var</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier">TyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#CoVar"><span class="hs-identifier">CoVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier">TyCoVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier">Id</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-54"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-55"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier">Name</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-56"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html"><span class="hs-identifier">GHC.Types.Unique.Set</span></a></span><span>
</span><span id="line-57"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html"><span class="hs-identifier">GHC.Types.Unique.DSet</span></a></span><span>
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html"><span class="hs-identifier">GHC.Types.Unique.FM</span></a></span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html#disjointUFM"><span class="hs-identifier">disjointUFM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html#pluralUFM"><span class="hs-identifier">pluralUFM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html#pprUFM"><span class="hs-identifier">pprUFM</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-59"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DFM.html"><span class="hs-identifier">GHC.Types.Unique.DFM</span></a></span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DFM.html#disjointUDFM"><span class="hs-identifier">disjointUDFM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DFM.html#udfmToUfm"><span class="hs-identifier">udfmToUfm</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DFM.html#anyUDFM"><span class="hs-identifier">anyUDFM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DFM.html#allUDFM"><span class="hs-identifier">allUDFM</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-60"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier">SDoc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-61"></span><span>
</span><span id="line-62"></span><span class="hs-comment">-- | A non-deterministic Variable Set</span><span>
</span><span id="line-63"></span><span class="hs-comment">--</span><span>
</span><span id="line-64"></span><span class="hs-comment">-- A non-deterministic set of variables.</span><span>
</span><span id="line-65"></span><span class="hs-comment">-- See Note [Deterministic UniqFM] in &quot;GHC.Types.Unique.DFM&quot; for explanation why it's not</span><span>
</span><span id="line-66"></span><span class="hs-comment">-- deterministic and why it matters. Use DVarSet if the set eventually</span><span>
</span><span id="line-67"></span><span class="hs-comment">-- gets converted into a list or folded over in a way where the order</span><span>
</span><span id="line-68"></span><span class="hs-comment">-- changes the generated code, for example when abstracting variables.</span><span>
</span><span id="line-69"></span><span class="hs-keyword">type</span><span> </span><span id="VarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-var">VarSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-70"></span><span>
</span><span id="line-71"></span><span class="hs-comment">-- | Identifier Set</span><span>
</span><span id="line-72"></span><span class="hs-keyword">type</span><span> </span><span id="IdSet"><span class="annot"><a href="GHC.Types.Var.Set.html#IdSet"><span class="hs-identifier hs-var">IdSet</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span class="hs-comment">-- | Type Variable Set</span><span>
</span><span id="line-75"></span><span class="hs-keyword">type</span><span> </span><span id="TyVarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#TyVarSet"><span class="hs-identifier hs-var">TyVarSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-76"></span><span>
</span><span id="line-77"></span><span class="hs-comment">-- | Coercion Variable Set</span><span>
</span><span id="line-78"></span><span class="hs-keyword">type</span><span> </span><span id="CoVarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#CoVarSet"><span class="hs-identifier hs-var">CoVarSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#CoVar"><span class="hs-identifier hs-type">CoVar</span></a></span><span>
</span><span id="line-79"></span><span>
</span><span id="line-80"></span><span class="hs-comment">-- | Type or Coercion Variable Set</span><span>
</span><span id="line-81"></span><span class="hs-keyword">type</span><span> </span><span id="TyCoVarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#TyCoVarSet"><span class="hs-identifier hs-var">TyCoVarSet</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span class="annot"><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-type">emptyVarSet</span></a></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-84"></span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectVarSet"><span class="hs-identifier hs-type">intersectVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-85"></span><span class="annot"><a href="GHC.Types.Var.Set.html#unionVarSet"><span class="hs-identifier hs-type">unionVarSet</span></a></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-86"></span><span class="annot"><a href="GHC.Types.Var.Set.html#unionVarSets"><span class="hs-identifier hs-type">unionVarSets</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-87"></span><span>
</span><span id="line-88"></span><span id="local-6989586621680807106"><span class="annot"><a href="GHC.Types.Var.Set.html#mapUnionVarSet"><span class="hs-identifier hs-type">mapUnionVarSet</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680807106"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680807106"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span></span><span>
</span><span id="line-89"></span><span class="hs-comment">-- ^ map the function over the list, and union the results</span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span class="annot"><a href="GHC.Types.Var.Set.html#unitVarSet"><span class="hs-identifier hs-type">unitVarSet</span></a></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-92"></span><span class="annot"><a href="GHC.Types.Var.Set.html#extendVarSet"><span class="hs-identifier hs-type">extendVarSet</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-93"></span><span class="annot"><a href="GHC.Types.Var.Set.html#extendVarSetList"><span class="hs-identifier hs-type">extendVarSetList</span></a></span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-94"></span><span class="annot"><a href="GHC.Types.Var.Set.html#elemVarSet"><span class="hs-identifier hs-type">elemVarSet</span></a></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-95"></span><span class="annot"><a href="GHC.Types.Var.Set.html#delVarSet"><span class="hs-identifier hs-type">delVarSet</span></a></span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-96"></span><span class="annot"><a href="GHC.Types.Var.Set.html#delVarSetList"><span class="hs-identifier hs-type">delVarSetList</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-97"></span><span class="annot"><a href="GHC.Types.Var.Set.html#minusVarSet"><span class="hs-identifier hs-type">minusVarSet</span></a></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-98"></span><span class="annot"><a href="GHC.Types.Var.Set.html#isEmptyVarSet"><span class="hs-identifier hs-type">isEmptyVarSet</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-99"></span><span class="annot"><a href="GHC.Types.Var.Set.html#mkVarSet"><span class="hs-identifier hs-type">mkVarSet</span></a></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-100"></span><span class="annot"><a href="GHC.Types.Var.Set.html#lookupVarSet_Directly"><span class="hs-identifier hs-type">lookupVarSet_Directly</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-101"></span><span class="annot"><a href="GHC.Types.Var.Set.html#lookupVarSet"><span class="hs-identifier hs-type">lookupVarSet</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-102"></span><span>                        </span><span class="hs-comment">-- Returns the set element, which may be</span><span>
</span><span id="line-103"></span><span>                        </span><span class="hs-comment">-- (==) to the argument, but not the same as</span><span>
</span><span id="line-104"></span><span class="annot"><a href="GHC.Types.Var.Set.html#lookupVarSetByName"><span class="hs-identifier hs-type">lookupVarSetByName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-105"></span><span class="annot"><a href="GHC.Types.Var.Set.html#sizeVarSet"><span class="hs-identifier hs-type">sizeVarSet</span></a></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-106"></span><span class="annot"><a href="GHC.Types.Var.Set.html#filterVarSet"><span class="hs-identifier hs-type">filterVarSet</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-107"></span><span>
</span><span id="line-108"></span><span class="annot"><a href="GHC.Types.Var.Set.html#delVarSetByKey"><span class="hs-identifier hs-type">delVarSetByKey</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-109"></span><span class="annot"><a href="GHC.Types.Var.Set.html#elemVarSetByKey"><span class="hs-identifier hs-type">elemVarSetByKey</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-110"></span><span class="annot"><a href="GHC.Types.Var.Set.html#partitionVarSet"><span class="hs-identifier hs-type">partitionVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-111"></span><span>
</span><span id="line-112"></span><span id="emptyVarSet"><span class="annot"><span class="annottext">emptyVarSet :: VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var hs-var">emptyVarSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet
forall a. UniqSet a
</span><a href="GHC.Types.Unique.Set.html#emptyUniqSet"><span class="hs-identifier hs-var">emptyUniqSet</span></a></span><span>
</span><span id="line-113"></span><span id="unitVarSet"><span class="annot"><span class="annottext">unitVarSet :: Var -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#unitVarSet"><span class="hs-identifier hs-var hs-var">unitVarSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Var -&gt; VarSet
forall a. Uniquable a =&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unitUniqSet"><span class="hs-identifier hs-var">unitUniqSet</span></a></span><span>
</span><span id="line-114"></span><span id="extendVarSet"><span class="annot"><span class="annottext">extendVarSet :: VarSet -&gt; Var -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#extendVarSet"><span class="hs-identifier hs-var hs-var">extendVarSet</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Var -&gt; VarSet
forall a. Uniquable a =&gt; UniqSet a -&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#addOneToUniqSet"><span class="hs-identifier hs-var">addOneToUniqSet</span></a></span><span>
</span><span id="line-115"></span><span id="extendVarSetList"><span class="annot"><span class="annottext">extendVarSetList :: VarSet -&gt; [Var] -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#extendVarSetList"><span class="hs-identifier hs-var hs-var">extendVarSetList</span></a></span></span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; [Var] -&gt; VarSet
forall a. Uniquable a =&gt; UniqSet a -&gt; [a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#addListToUniqSet"><span class="hs-identifier hs-var">addListToUniqSet</span></a></span><span>
</span><span id="line-116"></span><span id="intersectVarSet"><span class="annot"><span class="annottext">intersectVarSet :: VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#intersectVarSet"><span class="hs-identifier hs-var hs-var">intersectVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
forall a. UniqSet a -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#intersectUniqSets"><span class="hs-identifier hs-var">intersectUniqSets</span></a></span><span>
</span><span id="line-117"></span><span>
</span><span id="line-118"></span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectsVarSet"><span class="hs-identifier hs-type">intersectsVarSet</span></a></span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>     </span><span class="hs-comment">-- True if non-empty intersection</span><span>
</span><span id="line-119"></span><span class="annot"><a href="GHC.Types.Var.Set.html#disjointVarSet"><span class="hs-identifier hs-type">disjointVarSet</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>     </span><span class="hs-comment">-- True if empty intersection</span><span>
</span><span id="line-120"></span><span class="annot"><a href="GHC.Types.Var.Set.html#subVarSet"><span class="hs-identifier hs-type">subVarSet</span></a></span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>     </span><span class="hs-comment">-- True if first arg is subset of second</span><span>
</span><span id="line-121"></span><span>        </span><span class="hs-comment">-- (s1 `intersectsVarSet` s2) doesn't compute s2 if s1 is empty;</span><span>
</span><span id="line-122"></span><span>        </span><span class="hs-comment">-- ditto disjointVarSet, subVarSet</span><span>
</span><span id="line-123"></span><span>
</span><span id="line-124"></span><span id="unionVarSet"><span class="annot"><span class="annottext">unionVarSet :: VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#unionVarSet"><span class="hs-identifier hs-var hs-var">unionVarSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
forall a. UniqSet a -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unionUniqSets"><span class="hs-identifier hs-var">unionUniqSets</span></a></span><span>
</span><span id="line-125"></span><span id="unionVarSets"><span class="annot"><span class="annottext">unionVarSets :: [VarSet] -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#unionVarSets"><span class="hs-identifier hs-var hs-var">unionVarSets</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[VarSet] -&gt; VarSet
forall a. [UniqSet a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unionManyUniqSets"><span class="hs-identifier hs-var">unionManyUniqSets</span></a></span><span>
</span><span id="line-126"></span><span id="elemVarSet"><span class="annot"><span class="annottext">elemVarSet :: Var -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#elemVarSet"><span class="hs-identifier hs-var hs-var">elemVarSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Var -&gt; VarSet -&gt; Bool
forall a. Uniquable a =&gt; a -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#elementOfUniqSet"><span class="hs-identifier hs-var">elementOfUniqSet</span></a></span><span>
</span><span id="line-127"></span><span id="minusVarSet"><span class="annot"><span class="annottext">minusVarSet :: VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#minusVarSet"><span class="hs-identifier hs-var hs-var">minusVarSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
forall a. UniqSet a -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#minusUniqSet"><span class="hs-identifier hs-var">minusUniqSet</span></a></span><span>
</span><span id="line-128"></span><span id="delVarSet"><span class="annot"><span class="annottext">delVarSet :: VarSet -&gt; Var -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#delVarSet"><span class="hs-identifier hs-var hs-var">delVarSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Var -&gt; VarSet
forall a. Uniquable a =&gt; UniqSet a -&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#delOneFromUniqSet"><span class="hs-identifier hs-var">delOneFromUniqSet</span></a></span><span>
</span><span id="line-129"></span><span id="delVarSetList"><span class="annot"><span class="annottext">delVarSetList :: VarSet -&gt; [Var] -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#delVarSetList"><span class="hs-identifier hs-var hs-var">delVarSetList</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; [Var] -&gt; VarSet
forall a. Uniquable a =&gt; UniqSet a -&gt; [a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#delListFromUniqSet"><span class="hs-identifier hs-var">delListFromUniqSet</span></a></span><span>
</span><span id="line-130"></span><span id="isEmptyVarSet"><span class="annot"><span class="annottext">isEmptyVarSet :: VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#isEmptyVarSet"><span class="hs-identifier hs-var hs-var">isEmptyVarSet</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Bool
forall a. UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#isEmptyUniqSet"><span class="hs-identifier hs-var">isEmptyUniqSet</span></a></span><span>
</span><span id="line-131"></span><span id="mkVarSet"><span class="annot"><span class="annottext">mkVarSet :: [Var] -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#mkVarSet"><span class="hs-identifier hs-var hs-var">mkVarSet</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Var] -&gt; VarSet
forall a. Uniquable a =&gt; [a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#mkUniqSet"><span class="hs-identifier hs-var">mkUniqSet</span></a></span><span>
</span><span id="line-132"></span><span id="lookupVarSet_Directly"><span class="annot"><span class="annottext">lookupVarSet_Directly :: VarSet -&gt; Unique -&gt; Maybe Var
</span><a href="GHC.Types.Var.Set.html#lookupVarSet_Directly"><span class="hs-identifier hs-var hs-var">lookupVarSet_Directly</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Unique -&gt; Maybe Var
forall a. UniqSet a -&gt; Unique -&gt; Maybe a
</span><a href="GHC.Types.Unique.Set.html#lookupUniqSet_Directly"><span class="hs-identifier hs-var">lookupUniqSet_Directly</span></a></span><span>
</span><span id="line-133"></span><span id="lookupVarSet"><span class="annot"><span class="annottext">lookupVarSet :: VarSet -&gt; Var -&gt; Maybe Var
</span><a href="GHC.Types.Var.Set.html#lookupVarSet"><span class="hs-identifier hs-var hs-var">lookupVarSet</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Var -&gt; Maybe Var
forall key. Uniquable key =&gt; UniqSet key -&gt; key -&gt; Maybe key
</span><a href="GHC.Types.Unique.Set.html#lookupUniqSet"><span class="hs-identifier hs-var">lookupUniqSet</span></a></span><span>
</span><span id="line-134"></span><span id="lookupVarSetByName"><span class="annot"><span class="annottext">lookupVarSetByName :: VarSet -&gt; Name -&gt; Maybe Var
</span><a href="GHC.Types.Var.Set.html#lookupVarSetByName"><span class="hs-identifier hs-var hs-var">lookupVarSetByName</span></a></span></span><span> </span><span id="local-6989586621680806926"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806926"><span class="hs-identifier hs-var">set</span></a></span></span><span> </span><span id="local-6989586621680806925"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680806925"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Unique -&gt; Maybe Var
forall a. UniqSet a -&gt; Unique -&gt; Maybe a
</span><a href="GHC.Types.Unique.Set.html#lookupUniqSet_Directly"><span class="hs-identifier hs-var">lookupUniqSet_Directly</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806926"><span class="hs-identifier hs-var">set</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680806925"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-135"></span><span id="sizeVarSet"><span class="annot"><span class="annottext">sizeVarSet :: VarSet -&gt; Int
</span><a href="GHC.Types.Var.Set.html#sizeVarSet"><span class="hs-identifier hs-var hs-var">sizeVarSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Int
forall a. UniqSet a -&gt; Int
</span><a href="GHC.Types.Unique.Set.html#sizeUniqSet"><span class="hs-identifier hs-var">sizeUniqSet</span></a></span><span>
</span><span id="line-136"></span><span id="filterVarSet"><span class="annot"><span class="annottext">filterVarSet :: (Var -&gt; Bool) -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#filterVarSet"><span class="hs-identifier hs-var hs-var">filterVarSet</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; VarSet -&gt; VarSet
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#filterUniqSet"><span class="hs-identifier hs-var">filterUniqSet</span></a></span><span>
</span><span id="line-137"></span><span id="delVarSetByKey"><span class="annot"><span class="annottext">delVarSetByKey :: VarSet -&gt; Unique -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#delVarSetByKey"><span class="hs-identifier hs-var hs-var">delVarSetByKey</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Unique -&gt; VarSet
forall a. UniqSet a -&gt; Unique -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#delOneFromUniqSet_Directly"><span class="hs-identifier hs-var">delOneFromUniqSet_Directly</span></a></span><span>
</span><span id="line-138"></span><span id="elemVarSetByKey"><span class="annot"><span class="annottext">elemVarSetByKey :: Unique -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#elemVarSetByKey"><span class="hs-identifier hs-var hs-var">elemVarSetByKey</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique -&gt; VarSet -&gt; Bool
forall a. Unique -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#elemUniqSet_Directly"><span class="hs-identifier hs-var">elemUniqSet_Directly</span></a></span><span>
</span><span id="line-139"></span><span id="partitionVarSet"><span class="annot"><span class="annottext">partitionVarSet :: (Var -&gt; Bool) -&gt; VarSet -&gt; (VarSet, VarSet)
</span><a href="GHC.Types.Var.Set.html#partitionVarSet"><span class="hs-identifier hs-var hs-var">partitionVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; VarSet -&gt; (VarSet, VarSet)
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; (UniqSet a, UniqSet a)
</span><a href="GHC.Types.Unique.Set.html#partitionUniqSet"><span class="hs-identifier hs-var">partitionUniqSet</span></a></span><span>
</span><span id="line-140"></span><span>
</span><span id="line-141"></span><span id="mapUnionVarSet"><span class="annot"><span class="annottext">mapUnionVarSet :: forall a. (a -&gt; VarSet) -&gt; [a] -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#mapUnionVarSet"><span class="hs-identifier hs-var hs-var">mapUnionVarSet</span></a></span></span><span> </span><span id="local-6989586621680806916"><span class="annot"><span class="annottext">a -&gt; VarSet
</span><a href="#local-6989586621680806916"><span class="hs-identifier hs-var">get_set</span></a></span></span><span> </span><span id="local-6989586621680806915"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680806915"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; VarSet -&gt; VarSet) -&gt; VarSet -&gt; [a] -&gt; VarSet
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#unionVarSet"><span class="hs-identifier hs-var">unionVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">(VarSet -&gt; VarSet -&gt; VarSet)
-&gt; (a -&gt; VarSet) -&gt; a -&gt; VarSet -&gt; VarSet
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; VarSet
</span><a href="#local-6989586621680806916"><span class="hs-identifier hs-var">get_set</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680806915"><span class="hs-identifier hs-var">xs</span></a></span><span>
</span><span id="line-142"></span><span>
</span><span id="line-143"></span><span class="hs-comment">-- See comments with type signatures</span><span>
</span><span id="line-144"></span><span id="intersectsVarSet"><span class="annot"><span class="annottext">intersectsVarSet :: VarSet -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#intersectsVarSet"><span class="hs-identifier hs-var hs-var">intersectsVarSet</span></a></span></span><span> </span><span id="local-6989586621680806912"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806912"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680806911"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806911"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806912"><span class="hs-identifier hs-var">s1</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#disjointVarSet"><span class="hs-operator hs-var">`disjointVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806911"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-145"></span><span id="disjointVarSet"><span class="annot"><span class="annottext">disjointVarSet :: VarSet -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#disjointVarSet"><span class="hs-identifier hs-var hs-var">disjointVarSet</span></a></span></span><span>   </span><span id="local-6989586621680806909"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806909"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680806908"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806908"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UniqFM Var Var -&gt; UniqFM Var Var -&gt; Bool
forall key elt1 elt2. UniqFM key elt1 -&gt; UniqFM key elt2 -&gt; Bool
</span><a href="GHC.Types.Unique.FM.html#disjointUFM"><span class="hs-identifier hs-var">disjointUFM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; UniqFM Var Var
forall a. UniqSet a -&gt; UniqFM a a
</span><a href="GHC.Types.Unique.Set.html#getUniqSet"><span class="hs-identifier hs-var">getUniqSet</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806909"><span class="hs-identifier hs-var">s1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; UniqFM Var Var
forall a. UniqSet a -&gt; UniqFM a a
</span><a href="GHC.Types.Unique.Set.html#getUniqSet"><span class="hs-identifier hs-var">getUniqSet</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806908"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-146"></span><span id="subVarSet"><span class="annot"><span class="annottext">subVarSet :: VarSet -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#subVarSet"><span class="hs-identifier hs-var hs-var">subVarSet</span></a></span></span><span>        </span><span id="local-6989586621680806906"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806906"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680806905"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806905"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#isEmptyVarSet"><span class="hs-identifier hs-var">isEmptyVarSet</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806906"><span class="hs-identifier hs-var">s1</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#minusVarSet"><span class="hs-operator hs-var">`minusVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806905"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-147"></span><span>
</span><span id="line-148"></span><span class="annot"><a href="GHC.Types.Var.Set.html#anyVarSet"><span class="hs-identifier hs-type">anyVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-149"></span><span id="anyVarSet"><span class="annot"><span class="annottext">anyVarSet :: (Var -&gt; Bool) -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#anyVarSet"><span class="hs-identifier hs-var hs-var">anyVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; VarSet -&gt; Bool
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#uniqSetAny"><span class="hs-identifier hs-var">uniqSetAny</span></a></span><span>
</span><span id="line-150"></span><span>
</span><span id="line-151"></span><span class="annot"><a href="GHC.Types.Var.Set.html#allVarSet"><span class="hs-identifier hs-type">allVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-152"></span><span id="allVarSet"><span class="annot"><span class="annottext">allVarSet :: (Var -&gt; Bool) -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#allVarSet"><span class="hs-identifier hs-var hs-var">allVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; VarSet -&gt; Bool
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#uniqSetAll"><span class="hs-identifier hs-var">uniqSetAll</span></a></span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span id="local-6989586621680807091"><span id="local-6989586621680807092"><span class="annot"><a href="GHC.Types.Var.Set.html#mapVarSet"><span class="hs-identifier hs-type">mapVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Uniquable"><span class="hs-identifier hs-type">Uniquable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680807092"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680807091"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807092"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680807091"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680807092"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-155"></span><span id="mapVarSet"><span class="annot"><span class="annottext">mapVarSet :: forall b a. Uniquable b =&gt; (a -&gt; b) -&gt; UniqSet a -&gt; UniqSet b
</span><a href="GHC.Types.Var.Set.html#mapVarSet"><span class="hs-identifier hs-var hs-var">mapVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; UniqSet a -&gt; UniqSet b
forall b a. Uniquable b =&gt; (a -&gt; b) -&gt; UniqSet a -&gt; UniqSet b
</span><a href="GHC.Types.Unique.Set.html#mapUniqSet"><span class="hs-identifier hs-var">mapUniqSet</span></a></span><span>
</span><span id="line-156"></span><span>
</span><span id="line-157"></span><span class="hs-comment">-- See Note [Deterministic UniqFM] to learn about nondeterminism.</span><span>
</span><span id="line-158"></span><span class="hs-comment">-- If you use this please provide a justification why it doesn't introduce</span><span>
</span><span id="line-159"></span><span class="hs-comment">-- nondeterminism.</span><span>
</span><span id="line-160"></span><span id="local-6989586621680807088"><span class="annot"><a href="GHC.Types.Var.Set.html#nonDetStrictFoldVarSet"><span class="hs-identifier hs-type">nonDetStrictFoldVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807088"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807088"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807088"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807088"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-161"></span><span id="nonDetStrictFoldVarSet"><span class="annot"><span class="annottext">nonDetStrictFoldVarSet :: forall a. (Var -&gt; a -&gt; a) -&gt; a -&gt; VarSet -&gt; a
</span><a href="GHC.Types.Var.Set.html#nonDetStrictFoldVarSet"><span class="hs-identifier hs-var hs-var">nonDetStrictFoldVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; a -&gt; a) -&gt; a -&gt; VarSet -&gt; a
forall elt a. (elt -&gt; a -&gt; a) -&gt; a -&gt; UniqSet elt -&gt; a
</span><a href="GHC.Types.Unique.Set.html#nonDetStrictFoldUniqSet"><span class="hs-identifier hs-var">nonDetStrictFoldUniqSet</span></a></span><span>
</span><span id="line-162"></span><span>
</span><span id="line-163"></span><span class="annot"><a href="GHC.Types.Var.Set.html#fixVarSet"><span class="hs-identifier hs-type">fixVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span class="hs-special">)</span><span>   </span><span class="hs-comment">-- Map the current set to a new set</span><span>
</span><span id="line-164"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-165"></span><span class="hs-comment">-- (fixVarSet f s) repeatedly applies f to the set s,</span><span>
</span><span id="line-166"></span><span class="hs-comment">-- until it reaches a fixed point.</span><span>
</span><span id="line-167"></span><span id="fixVarSet"><span class="annot"><span class="annottext">fixVarSet :: (VarSet -&gt; VarSet) -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#fixVarSet"><span class="hs-identifier hs-var hs-var">fixVarSet</span></a></span></span><span> </span><span id="local-6989586621680806898"><span class="annot"><span class="annottext">VarSet -&gt; VarSet
</span><a href="#local-6989586621680806898"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span id="local-6989586621680806897"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806897"><span class="hs-identifier hs-var">vars</span></a></span></span><span>
</span><span id="line-168"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806896"><span class="hs-identifier hs-var">new_vars</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#subVarSet"><span class="hs-operator hs-var">`subVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806897"><span class="hs-identifier hs-var">vars</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806897"><span class="hs-identifier hs-var">vars</span></a></span><span>
</span><span id="line-169"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(VarSet -&gt; VarSet) -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#fixVarSet"><span class="hs-identifier hs-var">fixVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet
</span><a href="#local-6989586621680806898"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806896"><span class="hs-identifier hs-var">new_vars</span></a></span><span>
</span><span id="line-170"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-171"></span><span>    </span><span id="local-6989586621680806896"><span class="annot"><span class="annottext">new_vars :: VarSet
</span><a href="#local-6989586621680806896"><span class="hs-identifier hs-var hs-var">new_vars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet
</span><a href="#local-6989586621680806898"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806897"><span class="hs-identifier hs-var">vars</span></a></span><span>
</span><span id="line-172"></span><span>
</span><span id="line-173"></span><span class="annot"><a href="GHC.Types.Var.Set.html#transCloVarSet"><span class="hs-identifier hs-type">transCloVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-174"></span><span>                  </span><span class="hs-comment">-- Map some variables in the set to</span><span>
</span><span id="line-175"></span><span>                  </span><span class="hs-comment">-- extra variables that should be in it</span><span>
</span><span id="line-176"></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-177"></span><span class="hs-comment">-- (transCloVarSet f s) repeatedly applies f to new candidates, adding any</span><span>
</span><span id="line-178"></span><span class="hs-comment">-- new variables to s that it finds thereby, until it reaches a fixed point.</span><span>
</span><span id="line-179"></span><span class="hs-comment">--</span><span>
</span><span id="line-180"></span><span class="hs-comment">-- The function fn could be (Var -&gt; VarSet), but we use (VarSet -&gt; VarSet)</span><span>
</span><span id="line-181"></span><span class="hs-comment">-- for efficiency, so that the test can be batched up.</span><span>
</span><span id="line-182"></span><span class="hs-comment">-- It's essential that fn will work fine if given new candidates</span><span>
</span><span id="line-183"></span><span class="hs-comment">-- one at a time; ie  fn {v1,v2} = fn v1 `union` fn v2</span><span>
</span><span id="line-184"></span><span class="hs-comment">-- Use fixVarSet if the function needs to see the whole set all at once</span><span>
</span><span id="line-185"></span><span id="transCloVarSet"><span class="annot"><span class="annottext">transCloVarSet :: (VarSet -&gt; VarSet) -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#transCloVarSet"><span class="hs-identifier hs-var hs-var">transCloVarSet</span></a></span></span><span> </span><span id="local-6989586621680806895"><span class="annot"><span class="annottext">VarSet -&gt; VarSet
</span><a href="#local-6989586621680806895"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span id="local-6989586621680806894"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806894"><span class="hs-identifier hs-var">seeds</span></a></span></span><span>
</span><span id="line-186"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
</span><a href="#local-6989586621680806893"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806894"><span class="hs-identifier hs-var">seeds</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806894"><span class="hs-identifier hs-var">seeds</span></a></span><span>
</span><span id="line-187"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-188"></span><span>    </span><span class="annot"><a href="#local-6989586621680806893"><span class="hs-identifier hs-type">go</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>  </span><span class="hs-comment">-- Accumulating result</span><span>
</span><span id="line-189"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>  </span><span class="hs-comment">-- Work-list; un-processed subset of accumulating result</span><span>
</span><span id="line-190"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-191"></span><span>    </span><span class="hs-comment">-- Specification: go acc vs = acc `union` transClo fn vs</span><span>
</span><span id="line-192"></span><span>
</span><span id="line-193"></span><span>    </span><span id="local-6989586621680806893"><span class="annot"><span class="annottext">go :: VarSet -&gt; VarSet -&gt; VarSet
</span><a href="#local-6989586621680806893"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621680806892"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806892"><span class="hs-identifier hs-var">acc</span></a></span></span><span> </span><span id="local-6989586621680806891"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806891"><span class="hs-identifier hs-var">candidates</span></a></span></span><span>
</span><span id="line-194"></span><span>       </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#isEmptyVarSet"><span class="hs-identifier hs-var">isEmptyVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806890"><span class="hs-identifier hs-var">new_vs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806892"><span class="hs-identifier hs-var">acc</span></a></span><span>
</span><span id="line-195"></span><span>       </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
</span><a href="#local-6989586621680806893"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806892"><span class="hs-identifier hs-var">acc</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#unionVarSet"><span class="hs-operator hs-var">`unionVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806890"><span class="hs-identifier hs-var">new_vs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806890"><span class="hs-identifier hs-var">new_vs</span></a></span><span>
</span><span id="line-196"></span><span>       </span><span class="hs-keyword">where</span><span>
</span><span id="line-197"></span><span>         </span><span id="local-6989586621680806890"><span class="annot"><span class="annottext">new_vs :: VarSet
</span><a href="#local-6989586621680806890"><span class="hs-identifier hs-var hs-var">new_vs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet
</span><a href="#local-6989586621680806895"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806891"><span class="hs-identifier hs-var">candidates</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#minusVarSet"><span class="hs-operator hs-var">`minusVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806892"><span class="hs-identifier hs-var">acc</span></a></span><span>
</span><span id="line-198"></span><span>
</span><span id="line-199"></span><span class="annot"><a href="GHC.Types.Var.Set.html#seqVarSet"><span class="hs-identifier hs-type">seqVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-200"></span><span id="seqVarSet"><span class="annot"><span class="annottext">seqVarSet :: VarSet -&gt; ()
</span><a href="GHC.Types.Var.Set.html#seqVarSet"><span class="hs-identifier hs-var hs-var">seqVarSet</span></a></span></span><span> </span><span id="local-6989586621680806889"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806889"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Int
</span><a href="GHC.Types.Var.Set.html#sizeVarSet"><span class="hs-identifier hs-var">sizeVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680806889"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; () -&gt; ()
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-201"></span><span>
</span><span id="line-202"></span><span class="hs-comment">-- | Determines the pluralisation suffix appropriate for the length of a set</span><span>
</span><span id="line-203"></span><span class="hs-comment">-- in the same way that plural from Outputable does for lists.</span><span>
</span><span id="line-204"></span><span class="annot"><a href="GHC.Types.Var.Set.html#pluralVarSet"><span class="hs-identifier hs-type">pluralVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-205"></span><span id="pluralVarSet"><span class="annot"><span class="annottext">pluralVarSet :: VarSet -&gt; SDoc
</span><a href="GHC.Types.Var.Set.html#pluralVarSet"><span class="hs-identifier hs-var hs-var">pluralVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UniqFM Var Var -&gt; SDoc
forall key a. UniqFM key a -&gt; SDoc
</span><a href="GHC.Types.Unique.FM.html#pluralUFM"><span class="hs-identifier hs-var">pluralUFM</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqFM Var Var -&gt; SDoc)
-&gt; (VarSet -&gt; UniqFM Var Var) -&gt; VarSet -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; UniqFM Var Var
forall a. UniqSet a -&gt; UniqFM a a
</span><a href="GHC.Types.Unique.Set.html#getUniqSet"><span class="hs-identifier hs-var">getUniqSet</span></a></span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span class="hs-comment">-- | Pretty-print a non-deterministic set.</span><span>
</span><span id="line-208"></span><span class="hs-comment">-- The order of variables is non-deterministic and for pretty-printing that</span><span>
</span><span id="line-209"></span><span class="hs-comment">-- shouldn't be a problem.</span><span>
</span><span id="line-210"></span><span class="hs-comment">-- Having this function helps contain the non-determinism created with</span><span>
</span><span id="line-211"></span><span class="hs-comment">-- nonDetEltsUFM.</span><span>
</span><span id="line-212"></span><span class="hs-comment">-- Passing a list to the pretty-printing function allows the caller</span><span>
</span><span id="line-213"></span><span class="hs-comment">-- to decide on the order of Vars (eg. toposort them) without them having</span><span>
</span><span id="line-214"></span><span class="hs-comment">-- to use nonDetEltsUFM at the call site. This prevents from let-binding</span><span>
</span><span id="line-215"></span><span class="hs-comment">-- non-deterministically ordered lists and reusing them where determinism</span><span>
</span><span id="line-216"></span><span class="hs-comment">-- matters.</span><span>
</span><span id="line-217"></span><span class="annot"><a href="GHC.Types.Var.Set.html#pprVarSet"><span class="hs-identifier hs-type">pprVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>          </span><span class="hs-comment">-- ^ The things to be pretty printed</span><span>
</span><span id="line-218"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ The pretty printing function to use on the</span><span>
</span><span id="line-219"></span><span>                             </span><span class="hs-comment">-- elements</span><span>
</span><span id="line-220"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>            </span><span class="hs-comment">-- ^ 'SDoc' where the things have been pretty</span><span>
</span><span id="line-221"></span><span>                             </span><span class="hs-comment">-- printed</span><span>
</span><span id="line-222"></span><span id="pprVarSet"><span class="annot"><span class="annottext">pprVarSet :: VarSet -&gt; ([Var] -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Types.Var.Set.html#pprVarSet"><span class="hs-identifier hs-var hs-var">pprVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UniqFM Var Var -&gt; ([Var] -&gt; SDoc) -&gt; SDoc
forall key a. UniqFM key a -&gt; ([a] -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Types.Unique.FM.html#pprUFM"><span class="hs-identifier hs-var">pprUFM</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqFM Var Var -&gt; ([Var] -&gt; SDoc) -&gt; SDoc)
-&gt; (VarSet -&gt; UniqFM Var Var) -&gt; VarSet -&gt; ([Var] -&gt; SDoc) -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; UniqFM Var Var
forall a. UniqSet a -&gt; UniqFM a a
</span><a href="GHC.Types.Unique.Set.html#getUniqSet"><span class="hs-identifier hs-var">getUniqSet</span></a></span><span>
</span><span id="line-223"></span><span>
</span><span id="line-224"></span><span class="hs-comment">-- Deterministic VarSet</span><span>
</span><span id="line-225"></span><span class="hs-comment">-- See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM for explanation why we need</span><span>
</span><span id="line-226"></span><span class="hs-comment">-- DVarSet.</span><span>
</span><span id="line-227"></span><span>
</span><span id="line-228"></span><span class="hs-comment">-- | Deterministic Variable Set</span><span>
</span><span id="line-229"></span><span class="hs-keyword">type</span><span> </span><span id="DVarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-var">DVarSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html#UniqDSet"><span class="hs-identifier hs-type">UniqDSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-230"></span><span>
</span><span id="line-231"></span><span class="hs-comment">-- | Deterministic Identifier Set</span><span>
</span><span id="line-232"></span><span class="hs-keyword">type</span><span> </span><span id="DIdSet"><span class="annot"><a href="GHC.Types.Var.Set.html#DIdSet"><span class="hs-identifier hs-var">DIdSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html#UniqDSet"><span class="hs-identifier hs-type">UniqDSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-233"></span><span>
</span><span id="line-234"></span><span class="hs-comment">-- | Deterministic Type Variable Set</span><span>
</span><span id="line-235"></span><span class="hs-keyword">type</span><span> </span><span id="DTyVarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#DTyVarSet"><span class="hs-identifier hs-var">DTyVarSet</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html#UniqDSet"><span class="hs-identifier hs-type">UniqDSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-236"></span><span>
</span><span id="line-237"></span><span class="hs-comment">-- | Deterministic Type or Coercion Variable Set</span><span>
</span><span id="line-238"></span><span class="hs-keyword">type</span><span> </span><span id="DTyCoVarSet"><span class="annot"><a href="GHC.Types.Var.Set.html#DTyCoVarSet"><span class="hs-identifier hs-var">DTyCoVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html#UniqDSet"><span class="hs-identifier hs-type">UniqDSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span>
</span><span id="line-239"></span><span>
</span><span id="line-240"></span><span class="annot"><a href="GHC.Types.Var.Set.html#emptyDVarSet"><span class="hs-identifier hs-type">emptyDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-241"></span><span id="emptyDVarSet"><span class="annot"><span class="annottext">emptyDVarSet :: DVarSet
</span><a href="GHC.Types.Var.Set.html#emptyDVarSet"><span class="hs-identifier hs-var hs-var">emptyDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet
forall a. UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#emptyUniqDSet"><span class="hs-identifier hs-var">emptyUniqDSet</span></a></span><span>
</span><span id="line-242"></span><span>
</span><span id="line-243"></span><span class="annot"><a href="GHC.Types.Var.Set.html#unitDVarSet"><span class="hs-identifier hs-type">unitDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-244"></span><span id="unitDVarSet"><span class="annot"><span class="annottext">unitDVarSet :: Var -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#unitDVarSet"><span class="hs-identifier hs-var hs-var">unitDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Var -&gt; DVarSet
forall a. Uniquable a =&gt; a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#unitUniqDSet"><span class="hs-identifier hs-var">unitUniqDSet</span></a></span><span>
</span><span id="line-245"></span><span>
</span><span id="line-246"></span><span class="annot"><a href="GHC.Types.Var.Set.html#mkDVarSet"><span class="hs-identifier hs-type">mkDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-247"></span><span id="mkDVarSet"><span class="annot"><span class="annottext">mkDVarSet :: [Var] -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#mkDVarSet"><span class="hs-identifier hs-var hs-var">mkDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Var] -&gt; DVarSet
forall a. Uniquable a =&gt; [a] -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#mkUniqDSet"><span class="hs-identifier hs-var">mkUniqDSet</span></a></span><span>
</span><span id="line-248"></span><span>
</span><span id="line-249"></span><span class="hs-comment">-- The new element always goes to the right of existing ones.</span><span>
</span><span id="line-250"></span><span class="annot"><a href="GHC.Types.Var.Set.html#extendDVarSet"><span class="hs-identifier hs-type">extendDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-251"></span><span id="extendDVarSet"><span class="annot"><span class="annottext">extendDVarSet :: DVarSet -&gt; Var -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#extendDVarSet"><span class="hs-identifier hs-var hs-var">extendDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Var -&gt; DVarSet
forall a. Uniquable a =&gt; UniqDSet a -&gt; a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#addOneToUniqDSet"><span class="hs-identifier hs-var">addOneToUniqDSet</span></a></span><span>
</span><span id="line-252"></span><span>
</span><span id="line-253"></span><span class="annot"><a href="GHC.Types.Var.Set.html#elemDVarSet"><span class="hs-identifier hs-type">elemDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-254"></span><span id="elemDVarSet"><span class="annot"><span class="annottext">elemDVarSet :: Var -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#elemDVarSet"><span class="hs-identifier hs-var hs-var">elemDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Var -&gt; DVarSet -&gt; Bool
forall a. Uniquable a =&gt; a -&gt; UniqDSet a -&gt; Bool
</span><a href="GHC.Types.Unique.DSet.html#elementOfUniqDSet"><span class="hs-identifier hs-var">elementOfUniqDSet</span></a></span><span>
</span><span id="line-255"></span><span>
</span><span id="line-256"></span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetElems"><span class="hs-identifier hs-type">dVarSetElems</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-257"></span><span id="dVarSetElems"><span class="annot"><span class="annottext">dVarSetElems :: DVarSet -&gt; [Var]
</span><a href="GHC.Types.Var.Set.html#dVarSetElems"><span class="hs-identifier hs-var hs-var">dVarSetElems</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; [Var]
forall a. UniqDSet a -&gt; [a]
</span><a href="GHC.Types.Unique.DSet.html#uniqDSetToList"><span class="hs-identifier hs-var">uniqDSetToList</span></a></span><span>
</span><span id="line-258"></span><span>
</span><span id="line-259"></span><span class="annot"><a href="GHC.Types.Var.Set.html#subDVarSet"><span class="hs-identifier hs-type">subDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-260"></span><span id="subDVarSet"><span class="annot"><span class="annottext">subDVarSet :: DVarSet -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#subDVarSet"><span class="hs-identifier hs-var hs-var">subDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806882"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806882"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680806881"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806881"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#isEmptyDVarSet"><span class="hs-identifier hs-var">isEmptyDVarSet</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806882"><span class="hs-identifier hs-var">s1</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#minusDVarSet"><span class="hs-operator hs-var">`minusDVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806881"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-261"></span><span>
</span><span id="line-262"></span><span class="annot"><a href="GHC.Types.Var.Set.html#unionDVarSet"><span class="hs-identifier hs-type">unionDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-263"></span><span id="unionDVarSet"><span class="annot"><span class="annottext">unionDVarSet :: DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#unionDVarSet"><span class="hs-identifier hs-var hs-var">unionDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
forall a. UniqDSet a -&gt; UniqDSet a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#unionUniqDSets"><span class="hs-identifier hs-var">unionUniqDSets</span></a></span><span>
</span><span id="line-264"></span><span>
</span><span id="line-265"></span><span class="annot"><a href="GHC.Types.Var.Set.html#unionDVarSets"><span class="hs-identifier hs-type">unionDVarSets</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-266"></span><span id="unionDVarSets"><span class="annot"><span class="annottext">unionDVarSets :: [DVarSet] -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#unionDVarSets"><span class="hs-identifier hs-var hs-var">unionDVarSets</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[DVarSet] -&gt; DVarSet
forall a. [UniqDSet a] -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#unionManyUniqDSets"><span class="hs-identifier hs-var">unionManyUniqDSets</span></a></span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span class="hs-comment">-- | Map the function over the list, and union the results</span><span>
</span><span id="line-269"></span><span id="local-6989586621680807066"><span class="annot"><a href="GHC.Types.Var.Set.html#mapUnionDVarSet"><span class="hs-identifier hs-type">mapUnionDVarSet</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680807066"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680807066"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span></span><span>
</span><span id="line-270"></span><span id="mapUnionDVarSet"><span class="annot"><span class="annottext">mapUnionDVarSet :: forall a. (a -&gt; DVarSet) -&gt; [a] -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#mapUnionDVarSet"><span class="hs-identifier hs-var hs-var">mapUnionDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806877"><span class="annot"><span class="annottext">a -&gt; DVarSet
</span><a href="#local-6989586621680806877"><span class="hs-identifier hs-var">get_set</span></a></span></span><span> </span><span id="local-6989586621680806876"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680806876"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; DVarSet -&gt; DVarSet) -&gt; DVarSet -&gt; [a] -&gt; DVarSet
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#unionDVarSet"><span class="hs-identifier hs-var">unionDVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">(DVarSet -&gt; DVarSet -&gt; DVarSet)
-&gt; (a -&gt; DVarSet) -&gt; a -&gt; DVarSet -&gt; DVarSet
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; DVarSet
</span><a href="#local-6989586621680806877"><span class="hs-identifier hs-var">get_set</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="GHC.Types.Var.Set.html#emptyDVarSet"><span class="hs-identifier hs-var">emptyDVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680806876"><span class="hs-identifier hs-var">xs</span></a></span><span>
</span><span id="line-271"></span><span>
</span><span id="line-272"></span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectDVarSet"><span class="hs-identifier hs-type">intersectDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-273"></span><span id="intersectDVarSet"><span class="annot"><span class="annottext">intersectDVarSet :: DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#intersectDVarSet"><span class="hs-identifier hs-var hs-var">intersectDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
forall a. UniqDSet a -&gt; UniqDSet a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#intersectUniqDSets"><span class="hs-identifier hs-var">intersectUniqDSets</span></a></span><span>
</span><span id="line-274"></span><span>
</span><span id="line-275"></span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetIntersectVarSet"><span class="hs-identifier hs-type">dVarSetIntersectVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-276"></span><span id="dVarSetIntersectVarSet"><span class="annot"><span class="annottext">dVarSetIntersectVarSet :: DVarSet -&gt; VarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#dVarSetIntersectVarSet"><span class="hs-identifier hs-var hs-var">dVarSetIntersectVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; VarSet -&gt; DVarSet
forall a. UniqDSet a -&gt; UniqSet a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#uniqDSetIntersectUniqSet"><span class="hs-identifier hs-var">uniqDSetIntersectUniqSet</span></a></span><span>
</span><span id="line-277"></span><span>
</span><span id="line-278"></span><span class="hs-comment">-- | True if empty intersection</span><span>
</span><span id="line-279"></span><span class="annot"><a href="GHC.Types.Var.Set.html#disjointDVarSet"><span class="hs-identifier hs-type">disjointDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-280"></span><span id="disjointDVarSet"><span class="annot"><span class="annottext">disjointDVarSet :: DVarSet -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#disjointDVarSet"><span class="hs-identifier hs-var hs-var">disjointDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806873"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806873"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680806872"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806872"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UniqDFM Var Var -&gt; UniqDFM Var Var -&gt; Bool
forall key elt. UniqDFM key elt -&gt; UniqDFM key elt -&gt; Bool
</span><a href="GHC.Types.Unique.DFM.html#disjointUDFM"><span class="hs-identifier hs-var">disjointUDFM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DVarSet -&gt; UniqDFM Var Var
forall a. UniqDSet a -&gt; UniqDFM a a
</span><a href="GHC.Types.Unique.DSet.html#getUniqDSet"><span class="hs-identifier hs-var">getUniqDSet</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806873"><span class="hs-identifier hs-var">s1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DVarSet -&gt; UniqDFM Var Var
forall a. UniqDSet a -&gt; UniqDFM a a
</span><a href="GHC.Types.Unique.DSet.html#getUniqDSet"><span class="hs-identifier hs-var">getUniqDSet</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806872"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span class="hs-comment">-- | True if non-empty intersection</span><span>
</span><span id="line-283"></span><span class="annot"><a href="GHC.Types.Var.Set.html#intersectsDVarSet"><span class="hs-identifier hs-type">intersectsDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-284"></span><span id="intersectsDVarSet"><span class="annot"><span class="annottext">intersectsDVarSet :: DVarSet -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#intersectsDVarSet"><span class="hs-identifier hs-var hs-var">intersectsDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806870"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806870"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680806869"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806869"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806870"><span class="hs-identifier hs-var">s1</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#disjointDVarSet"><span class="hs-operator hs-var">`disjointDVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806869"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-285"></span><span>
</span><span id="line-286"></span><span class="annot"><a href="GHC.Types.Var.Set.html#isEmptyDVarSet"><span class="hs-identifier hs-type">isEmptyDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-287"></span><span id="isEmptyDVarSet"><span class="annot"><span class="annottext">isEmptyDVarSet :: DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#isEmptyDVarSet"><span class="hs-identifier hs-var hs-var">isEmptyDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Bool
forall a. UniqDSet a -&gt; Bool
</span><a href="GHC.Types.Unique.DSet.html#isEmptyUniqDSet"><span class="hs-identifier hs-var">isEmptyUniqDSet</span></a></span><span>
</span><span id="line-288"></span><span>
</span><span id="line-289"></span><span class="annot"><a href="GHC.Types.Var.Set.html#delDVarSet"><span class="hs-identifier hs-type">delDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-290"></span><span id="delDVarSet"><span class="annot"><span class="annottext">delDVarSet :: DVarSet -&gt; Var -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#delDVarSet"><span class="hs-identifier hs-var hs-var">delDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Var -&gt; DVarSet
forall a. Uniquable a =&gt; UniqDSet a -&gt; a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#delOneFromUniqDSet"><span class="hs-identifier hs-var">delOneFromUniqDSet</span></a></span><span>
</span><span id="line-291"></span><span>
</span><span id="line-292"></span><span class="annot"><a href="GHC.Types.Var.Set.html#minusDVarSet"><span class="hs-identifier hs-type">minusDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-293"></span><span id="minusDVarSet"><span class="annot"><span class="annottext">minusDVarSet :: DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#minusDVarSet"><span class="hs-identifier hs-var hs-var">minusDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
forall a. UniqDSet a -&gt; UniqDSet a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#minusUniqDSet"><span class="hs-identifier hs-var">minusUniqDSet</span></a></span><span>
</span><span id="line-294"></span><span>
</span><span id="line-295"></span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetMinusVarSet"><span class="hs-identifier hs-type">dVarSetMinusVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-296"></span><span id="dVarSetMinusVarSet"><span class="annot"><span class="annottext">dVarSetMinusVarSet :: DVarSet -&gt; VarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#dVarSetMinusVarSet"><span class="hs-identifier hs-var hs-var">dVarSetMinusVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; VarSet -&gt; DVarSet
forall a. UniqDSet a -&gt; UniqSet a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#uniqDSetMinusUniqSet"><span class="hs-identifier hs-var">uniqDSetMinusUniqSet</span></a></span><span>
</span><span id="line-297"></span><span>
</span><span id="line-298"></span><span class="hs-comment">-- See Note [Deterministic UniqFM] to learn about nondeterminism.</span><span>
</span><span id="line-299"></span><span class="hs-comment">-- If you use this please provide a justification why it doesn't introduce</span><span>
</span><span id="line-300"></span><span class="hs-comment">-- nondeterminism.</span><span>
</span><span id="line-301"></span><span id="local-6989586621680807058"><span class="annot"><a href="GHC.Types.Var.Set.html#nonDetStrictFoldDVarSet"><span class="hs-identifier hs-type">nonDetStrictFoldDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807058"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807058"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807058"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807058"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-302"></span><span id="nonDetStrictFoldDVarSet"><span class="annot"><span class="annottext">nonDetStrictFoldDVarSet :: forall a. (Var -&gt; a -&gt; a) -&gt; a -&gt; DVarSet -&gt; a
</span><a href="GHC.Types.Var.Set.html#nonDetStrictFoldDVarSet"><span class="hs-identifier hs-var hs-var">nonDetStrictFoldDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; a -&gt; a) -&gt; a -&gt; DVarSet -&gt; a
forall a b. (a -&gt; b -&gt; b) -&gt; b -&gt; UniqDSet a -&gt; b
</span><a href="GHC.Types.Unique.DSet.html#nonDetStrictFoldUniqDSet"><span class="hs-identifier hs-var">nonDetStrictFoldUniqDSet</span></a></span><span>
</span><span id="line-303"></span><span>
</span><span id="line-304"></span><span class="annot"><a href="GHC.Types.Var.Set.html#anyDVarSet"><span class="hs-identifier hs-type">anyDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-305"></span><span id="anyDVarSet"><span class="annot"><span class="annottext">anyDVarSet :: (Var -&gt; Bool) -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#anyDVarSet"><span class="hs-identifier hs-var hs-var">anyDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806863"><span class="annot"><span class="annottext">Var -&gt; Bool
</span><a href="#local-6989586621680806863"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; UniqDFM Var Var -&gt; Bool
forall elt key. (elt -&gt; Bool) -&gt; UniqDFM key elt -&gt; Bool
</span><a href="GHC.Types.Unique.DFM.html#anyUDFM"><span class="hs-identifier hs-var">anyUDFM</span></a></span><span> </span><span class="annot"><span class="annottext">Var -&gt; Bool
</span><a href="#local-6989586621680806863"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqDFM Var Var -&gt; Bool)
-&gt; (DVarSet -&gt; UniqDFM Var Var) -&gt; DVarSet -&gt; Bool
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; UniqDFM Var Var
forall a. UniqDSet a -&gt; UniqDFM a a
</span><a href="GHC.Types.Unique.DSet.html#getUniqDSet"><span class="hs-identifier hs-var">getUniqDSet</span></a></span><span>
</span><span id="line-306"></span><span>
</span><span id="line-307"></span><span class="annot"><a href="GHC.Types.Var.Set.html#allDVarSet"><span class="hs-identifier hs-type">allDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-308"></span><span id="allDVarSet"><span class="annot"><span class="annottext">allDVarSet :: (Var -&gt; Bool) -&gt; DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#allDVarSet"><span class="hs-identifier hs-var hs-var">allDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806862"><span class="annot"><span class="annottext">Var -&gt; Bool
</span><a href="#local-6989586621680806862"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; UniqDFM Var Var -&gt; Bool
forall elt key. (elt -&gt; Bool) -&gt; UniqDFM key elt -&gt; Bool
</span><a href="GHC.Types.Unique.DFM.html#allUDFM"><span class="hs-identifier hs-var">allUDFM</span></a></span><span> </span><span class="annot"><span class="annottext">Var -&gt; Bool
</span><a href="#local-6989586621680806862"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqDFM Var Var -&gt; Bool)
-&gt; (DVarSet -&gt; UniqDFM Var Var) -&gt; DVarSet -&gt; Bool
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; UniqDFM Var Var
forall a. UniqDSet a -&gt; UniqDFM a a
</span><a href="GHC.Types.Unique.DSet.html#getUniqDSet"><span class="hs-identifier hs-var">getUniqDSet</span></a></span><span>
</span><span id="line-309"></span><span>
</span><span id="line-310"></span><span id="local-6989586621680807051"><span id="local-6989586621680807052"><span class="annot"><a href="GHC.Types.Var.Set.html#mapDVarSet"><span class="hs-identifier hs-type">mapDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Uniquable"><span class="hs-identifier hs-type">Uniquable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680807052"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680807051"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680807052"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html#UniqDSet"><span class="hs-identifier hs-type">UniqDSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680807051"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.DSet.html#UniqDSet"><span class="hs-identifier hs-type">UniqDSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680807052"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-311"></span><span id="mapDVarSet"><span class="annot"><span class="annottext">mapDVarSet :: forall b a. Uniquable b =&gt; (a -&gt; b) -&gt; UniqDSet a -&gt; UniqDSet b
</span><a href="GHC.Types.Var.Set.html#mapDVarSet"><span class="hs-identifier hs-var hs-var">mapDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; UniqDSet a -&gt; UniqDSet b
forall b a. Uniquable b =&gt; (a -&gt; b) -&gt; UniqDSet a -&gt; UniqDSet b
</span><a href="GHC.Types.Unique.DSet.html#mapUniqDSet"><span class="hs-identifier hs-var">mapUniqDSet</span></a></span><span>
</span><span id="line-312"></span><span>
</span><span id="line-313"></span><span class="annot"><a href="GHC.Types.Var.Set.html#filterDVarSet"><span class="hs-identifier hs-type">filterDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-314"></span><span id="filterDVarSet"><span class="annot"><span class="annottext">filterDVarSet :: (Var -&gt; Bool) -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#filterDVarSet"><span class="hs-identifier hs-var hs-var">filterDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; DVarSet -&gt; DVarSet
forall a. (a -&gt; Bool) -&gt; UniqDSet a -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#filterUniqDSet"><span class="hs-identifier hs-var">filterUniqDSet</span></a></span><span>
</span><span id="line-315"></span><span>
</span><span id="line-316"></span><span class="annot"><a href="GHC.Types.Var.Set.html#sizeDVarSet"><span class="hs-identifier hs-type">sizeDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-317"></span><span id="sizeDVarSet"><span class="annot"><span class="annottext">sizeDVarSet :: DVarSet -&gt; Int
</span><a href="GHC.Types.Var.Set.html#sizeDVarSet"><span class="hs-identifier hs-var hs-var">sizeDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Int
forall a. UniqDSet a -&gt; Int
</span><a href="GHC.Types.Unique.DSet.html#sizeUniqDSet"><span class="hs-identifier hs-var">sizeUniqDSet</span></a></span><span>
</span><span id="line-318"></span><span>
</span><span id="line-319"></span><span class="hs-comment">-- | Partition DVarSet according to the predicate given</span><span>
</span><span id="line-320"></span><span class="annot"><a href="GHC.Types.Var.Set.html#partitionDVarSet"><span class="hs-identifier hs-type">partitionDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-321"></span><span id="partitionDVarSet"><span class="annot"><span class="annottext">partitionDVarSet :: (Var -&gt; Bool) -&gt; DVarSet -&gt; (DVarSet, DVarSet)
</span><a href="GHC.Types.Var.Set.html#partitionDVarSet"><span class="hs-identifier hs-var hs-var">partitionDVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Var -&gt; Bool) -&gt; DVarSet -&gt; (DVarSet, DVarSet)
forall a. (a -&gt; Bool) -&gt; UniqDSet a -&gt; (UniqDSet a, UniqDSet a)
</span><a href="GHC.Types.Unique.DSet.html#partitionUniqDSet"><span class="hs-identifier hs-var">partitionUniqDSet</span></a></span><span>
</span><span id="line-322"></span><span>
</span><span id="line-323"></span><span class="hs-comment">-- | Delete a list of variables from DVarSet</span><span>
</span><span id="line-324"></span><span class="annot"><a href="GHC.Types.Var.Set.html#delDVarSetList"><span class="hs-identifier hs-type">delDVarSetList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-325"></span><span id="delDVarSetList"><span class="annot"><span class="annottext">delDVarSetList :: DVarSet -&gt; [Var] -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#delDVarSetList"><span class="hs-identifier hs-var hs-var">delDVarSetList</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; [Var] -&gt; DVarSet
forall a. Uniquable a =&gt; UniqDSet a -&gt; [a] -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#delListFromUniqDSet"><span class="hs-identifier hs-var">delListFromUniqDSet</span></a></span><span>
</span><span id="line-326"></span><span>
</span><span id="line-327"></span><span class="annot"><a href="GHC.Types.Var.Set.html#seqDVarSet"><span class="hs-identifier hs-type">seqDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-328"></span><span id="seqDVarSet"><span class="annot"><span class="annottext">seqDVarSet :: DVarSet -&gt; ()
</span><a href="GHC.Types.Var.Set.html#seqDVarSet"><span class="hs-identifier hs-var hs-var">seqDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806854"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806854"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Int
</span><a href="GHC.Types.Var.Set.html#sizeDVarSet"><span class="hs-identifier hs-var">sizeDVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806854"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; () -&gt; ()
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-329"></span><span>
</span><span id="line-330"></span><span class="hs-comment">-- | Add a list of variables to DVarSet</span><span>
</span><span id="line-331"></span><span class="annot"><a href="GHC.Types.Var.Set.html#extendDVarSetList"><span class="hs-identifier hs-type">extendDVarSetList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-332"></span><span id="extendDVarSetList"><span class="annot"><span class="annottext">extendDVarSetList :: DVarSet -&gt; [Var] -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#extendDVarSetList"><span class="hs-identifier hs-var hs-var">extendDVarSetList</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; [Var] -&gt; DVarSet
forall a. Uniquable a =&gt; UniqDSet a -&gt; [a] -&gt; UniqDSet a
</span><a href="GHC.Types.Unique.DSet.html#addListToUniqDSet"><span class="hs-identifier hs-var">addListToUniqDSet</span></a></span><span>
</span><span id="line-333"></span><span>
</span><span id="line-334"></span><span class="hs-comment">-- | Convert a DVarSet to a VarSet by forgetting the order of insertion</span><span>
</span><span id="line-335"></span><span class="annot"><a href="GHC.Types.Var.Set.html#dVarSetToVarSet"><span class="hs-identifier hs-type">dVarSetToVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span>
</span><span id="line-336"></span><span id="dVarSetToVarSet"><span class="annot"><span class="annottext">dVarSetToVarSet :: DVarSet -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#dVarSetToVarSet"><span class="hs-identifier hs-var hs-var">dVarSetToVarSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UniqFM Var Var -&gt; VarSet
forall a. UniqFM a a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unsafeUFMToUniqSet"><span class="hs-identifier hs-var">unsafeUFMToUniqSet</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqFM Var Var -&gt; VarSet)
-&gt; (DVarSet -&gt; UniqFM Var Var) -&gt; DVarSet -&gt; VarSet
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">UniqDFM Var Var -&gt; UniqFM Var Var
forall key elt. UniqDFM key elt -&gt; UniqFM key elt
</span><a href="GHC.Types.Unique.DFM.html#udfmToUfm"><span class="hs-identifier hs-var">udfmToUfm</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqDFM Var Var -&gt; UniqFM Var Var)
-&gt; (DVarSet -&gt; UniqDFM Var Var) -&gt; DVarSet -&gt; UniqFM Var Var
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; UniqDFM Var Var
forall a. UniqDSet a -&gt; UniqDFM a a
</span><a href="GHC.Types.Unique.DSet.html#getUniqDSet"><span class="hs-identifier hs-var">getUniqDSet</span></a></span><span>
</span><span id="line-337"></span><span>
</span><span id="line-338"></span><span class="hs-comment">-- | transCloVarSet for DVarSet</span><span>
</span><span id="line-339"></span><span class="annot"><a href="GHC.Types.Var.Set.html#transCloDVarSet"><span class="hs-identifier hs-type">transCloDVarSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-340"></span><span>                  </span><span class="hs-comment">-- Map some variables in the set to</span><span>
</span><span id="line-341"></span><span>                  </span><span class="hs-comment">-- extra variables that should be in it</span><span>
</span><span id="line-342"></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-343"></span><span class="hs-comment">-- (transCloDVarSet f s) repeatedly applies f to new candidates, adding any</span><span>
</span><span id="line-344"></span><span class="hs-comment">-- new variables to s that it finds thereby, until it reaches a fixed point.</span><span>
</span><span id="line-345"></span><span class="hs-comment">--</span><span>
</span><span id="line-346"></span><span class="hs-comment">-- The function fn could be (Var -&gt; DVarSet), but we use (DVarSet -&gt; DVarSet)</span><span>
</span><span id="line-347"></span><span class="hs-comment">-- for efficiency, so that the test can be batched up.</span><span>
</span><span id="line-348"></span><span class="hs-comment">-- It's essential that fn will work fine if given new candidates</span><span>
</span><span id="line-349"></span><span class="hs-comment">-- one at a time; ie  fn {v1,v2} = fn v1 `union` fn v2</span><span>
</span><span id="line-350"></span><span id="transCloDVarSet"><span class="annot"><span class="annottext">transCloDVarSet :: (DVarSet -&gt; DVarSet) -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#transCloDVarSet"><span class="hs-identifier hs-var hs-var">transCloDVarSet</span></a></span></span><span> </span><span id="local-6989586621680806851"><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet
</span><a href="#local-6989586621680806851"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span id="local-6989586621680806850"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806850"><span class="hs-identifier hs-var">seeds</span></a></span></span><span>
</span><span id="line-351"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="#local-6989586621680806849"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806850"><span class="hs-identifier hs-var">seeds</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806850"><span class="hs-identifier hs-var">seeds</span></a></span><span>
</span><span id="line-352"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-353"></span><span>    </span><span class="annot"><a href="#local-6989586621680806849"><span class="hs-identifier hs-type">go</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>  </span><span class="hs-comment">-- Accumulating result</span><span>
</span><span id="line-354"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>  </span><span class="hs-comment">-- Work-list; un-processed subset of accumulating result</span><span>
</span><span id="line-355"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-356"></span><span>    </span><span class="hs-comment">-- Specification: go acc vs = acc `union` transClo fn vs</span><span>
</span><span id="line-357"></span><span>
</span><span id="line-358"></span><span>    </span><span id="local-6989586621680806849"><span class="annot"><span class="annottext">go :: DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="#local-6989586621680806849"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621680806848"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806848"><span class="hs-identifier hs-var">acc</span></a></span></span><span> </span><span id="local-6989586621680806847"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806847"><span class="hs-identifier hs-var">candidates</span></a></span></span><span>
</span><span id="line-359"></span><span>       </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#isEmptyDVarSet"><span class="hs-identifier hs-var">isEmptyDVarSet</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806846"><span class="hs-identifier hs-var">new_vs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806848"><span class="hs-identifier hs-var">acc</span></a></span><span>
</span><span id="line-360"></span><span>       </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="#local-6989586621680806849"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806848"><span class="hs-identifier hs-var">acc</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#unionDVarSet"><span class="hs-operator hs-var">`unionDVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806846"><span class="hs-identifier hs-var">new_vs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806846"><span class="hs-identifier hs-var">new_vs</span></a></span><span>
</span><span id="line-361"></span><span>       </span><span class="hs-keyword">where</span><span>
</span><span id="line-362"></span><span>         </span><span id="local-6989586621680806846"><span class="annot"><span class="annottext">new_vs :: DVarSet
</span><a href="#local-6989586621680806846"><span class="hs-identifier hs-var hs-var">new_vs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet
</span><a href="#local-6989586621680806851"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806847"><span class="hs-identifier hs-var">candidates</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet -&gt; DVarSet -&gt; DVarSet
</span><a href="GHC.Types.Var.Set.html#minusDVarSet"><span class="hs-operator hs-var">`minusDVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680806848"><span class="hs-identifier hs-var">acc</span></a></span><span>
</span><span id="line-363"></span></pre></body></html>